package com.client.elements.normal.boxes;

import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;

public class Timebox {
	public static Widget timebox(){
		//Elemente erzeugen
		final HTML hinweis = new HTML("hh:mm");
		final TextBox zeit = new TextBox();
		zeit.setText("");
		zeit.addStyleName("red_Background");

		//Elemente hinzufuegen
		FlowPanel panel = new FlowPanel();
		panel.add(hinweis);
		panel.add(zeit);

		zeit.addValueChangeHandler(new ValueChangeHandler<String>() {
			@Override
			public void onValueChange(ValueChangeEvent<String> event) {
				String zeit_ueberprueft = ueberpruefeZeit(zeit.getValue());
				if (zeit_ueberprueft == null) {
					zeit.addStyleName("red_Background");
				}else {
					zeit.setValue(zeit_ueberprueft);
					zeit.removeStyleName("red_Background");

				}
			}
		});
		return panel;
	}

	/*�berpr�fung der Eingabe*/
	public static String ueberpruefeZeit(String zeit){
		if (zeit.length()<3) {
			zeit= zeit + ":00";
		}
		//Es muss ein Doppelpunkt vorhanden sein
		int anzahlDoppelpunkte = 0;
		for (int i = 0; i < zeit.length(); i++) {
			if (zeit.substring(i, i+1).equals(":")) {
				anzahlDoppelpunkte++;
			}
		}
		if (anzahlDoppelpunkte!=1) {
			return null;
		}

		//Parsen der Eingaben
		int mm, hh;
		try {
			hh = Integer.parseInt(zeit.substring(0, zeit.indexOf(":")));
			mm = Integer.parseInt(zeit.substring(zeit.indexOf(":") + 1, zeit.length()));
		} catch (NumberFormatException e) {
			return null;
		}

		//Ueberpruefung der Werte
		if ((mm>59)||(hh>23)) {
			return null;
		}

		String ausgabe_mm, ausgabe_hh;
		if (mm<10) {
			ausgabe_mm = "0" + mm;
		}else {
			ausgabe_mm = "" + mm;
		}

		if (hh<10) {
			ausgabe_hh = "0" + hh;
		}else {
			ausgabe_hh = "" + hh;
		}
		return ausgabe_hh + ":" + ausgabe_mm;
	}
}
